package com.kinghood.productcenter.service.base;

import com.kinghood.productcenter.common.model.dao.base.BaseSupplierDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kinghood.infrastructure.model.dto.SortReqDTO;
import com.kinghood.infrastructure.model.dto.StatusReqDTO;
import com.kinghood.productcenter.common.model.dto.base.ListBrandQueryDTO;
import com.kinghood.productcenter.common.model.dto.base.ListSupplierQueryDTO;
import com.kinghood.productcenter.common.model.dto.base.SupplierReqDTO;
import com.kinghood.productcenter.common.model.vo.base.SupplierVO;
import com.kinghood.sharding.model.PageResponseVO;

import javax.servlet.http.HttpServletResponse;

/**
 * <p>
 * 基础选项-供应商 服务类
 * </p>
 *
 * @author KingHood
 * @since 2023-12-20
 */
public interface IBaseSupplierService extends IService<BaseSupplierDO> {

    /**
     * 更新供应商状态
     *
     * @param param 参数
     * @return
     * @author jp
     * @date 2024/01/12 14:57
     */
    void updateSupplierStatus(StatusReqDTO param);

    /**
     * 更新供应商排序
     *
     * @param param 参数
     * @return
     * @author jp
     * @date 2024/01/12 14:57
     */
    void updateSupplierSort(SortReqDTO param);

    /**
     * 删除
     *
     * @param id 身份证件
     * @return
     * @author jp
     * @date 2024/01/12 14:57
     */
    void delSupplierById(Long id);

    /**
     * 添加或更新供应商
     *
     * @param param 参数
     * @return
     * @author jp
     * @date 2024/01/12 14:57
     */
    void addOrUpdateSupplier(SupplierReqDTO param);

    /**
     * 列出供应商
     *
     * @param param 参数
     * @return @return {@link PageResponseVO }
     * @author jp
     * @date 2024/01/12 14:57
     */
    PageResponseVO listSupplier(ListSupplierQueryDTO param);

    /**
     * 供应商详情
     *
     * @param id 身份证件
     * @return @return {@link SupplierVO }
     * @author jp
     * @date 2024/01/12 14:57
     */
    SupplierVO detailSupplier(Long id);

    /**
     * 下载供应商
     *
     * @param param    参数
     * @param response 回答
     * @author jp
     * @date 2024/01/04
     */
    void downloadSupplier(ListSupplierQueryDTO param, HttpServletResponse response);
}
